Jump to content

Игра на HTML5


Vlad
 Share

Recommended Posts

Сделал свою первую игру на Canvas API. Для начала выбрал идею попроще, логическая игра на одного человека.

http://jsfiddle.net/EhDWR/2/

В процессе игры придумал разные улучшения --- явно не хватает отмены последнего хода, дизайн можно "прикрутить" или вообще концепцию игры поменять. Сделать упор на социальную составляющую. Убрать ограничение в 22 хода и сохранять результаты игроков, у кого меньше, тот и молодец. Но это пока фантазии.

Интересует оптимизация кода, что можно улучшить в скрипте?

Link to comment
Share on other sites

Только вот как в неё играть, так и не понял :blush:

Трудное детство без головоломок?

Да нет, головоломки как раз всегда были у меня повсюду, и в игры разные любил играть, разгадывать и т.д, по тем же шахматам даже разряд есть, но вот эта игра, которую Влад смастерил, почему то прошла мимо меня, т.е. вообще ни разу в неё не играл за всю жизнь, ни я, не мои знакомые. :unsure:

Link to comment
Share on other sites

У меня книжка есть набитая настольными логическими играми, большинство из которых прошли мимо. Объясняется легко, эти игры популярны в Африке, Южной Америке и других континентах. Тем интереснее их делать и популяризировать.

Делать было в основном легко, пара дней всего ушла, иногда только упирался в незнания особенностей JS. К примеру, почему-то решил, что один массив можно присвоить другому, но пришлось делать цикл. Так и не разобрался, как в Canvas менять порядок элементов, чтобы один был поверх другого. Защиту от дурака долго отлаживал, чтобы фишки можно было выбирать только те, у которых есть ход и ходили они правильно. По началу фишки по диагонали прыгали и ходили на две клетки независимо от того, есть перед ними другая фишка или нет.

Link to comment
Share on other sites

Vlad, Понял Влад, ну всё равно молодец!

Так и не разобрался, как в Canvas менять порядок элементов

А вот по моему никак. Только если заново перерисовывать. Ты же рисуешь на холсте как бы, а рисунок нельзя просто так взять и перенести. Поэтому только стирать и заново рисовать. Стирать либо место за ним, либо весь кэнвас сразу.

Я вот думаю. Не сделать ли мне какую-нибудь игру. Те же крестики-нолики. Или может все-таки что-то логическое?

Да ты уже, я заметил много чего "Сделал", только языком правда ;)

  • Like 1
Link to comment
Share on other sites

Кажется я неверно воспринял условия задачи, поэтому выиграть невозможно. Ведь ходом можно считать переход одной фишки сразу через несколько других. У меня же сейчас любое движение считается одним ходом.

Link to comment
Share on other sites

Тоже раньше не играл в подобные игрушки.

Пишу игру на jquery, пока что есть человек который бегает по уровню и статичные враги, занимаюсь когда свободен.

Канвас и тонкости анимаций css3 еще не освоил, поэтому приходится на jquery

Edited by gibigate
Link to comment
Share on other sites

Переделываю игру под новый дизайн и другую концепцию. Возник вопрос, можно ли канвас уменьшить и передать в другой канвас в виде картинки? Мне нужно, чтобы рядом выводилась уменьшенная копия моего рисунка.

Link to comment
Share on other sites

Переделываю игру под новый дизайн и другую концепцию. Возник вопрос, можно ли канвас уменьшить и передать в другой канвас в виде картинки? Мне нужно, чтобы рядом выводилась уменьшенная копия моего рисунка.

Хороший вопрос. Я думаю вот этот код натолкнёт тебя на мысль ;)

<!DOCTYPE HTML>
<html lang="en"><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">


<meta charset="utf-8">
<title>Canvas Primer - Example: ImageData colour inversion filter</title>

</head><body>

<p><canvas id="myCanvas" width="350" height="350"></canvas></p>
<canvas id="test"></canvas>
<script type="text/javascript">

var test = document.getElementById('test');
testCtx = test.getContext('2d');
testCtx.fillStyle = 'red';
testCtx.fillRect(0, 0, 100, 100);
testCtx.fill();<!--
window.addEventListener('load', function () {

var elem = document.getElementById('myCanvas');
if (!elem || !elem.getContext) {
return;
}


var context = elem.getContext('2d');

var x = 0, y = 0;


context.drawImage(test, x, y);



}, false);
</script>
</body></html>

Link to comment
Share on other sites

Вот такой вот ещё вариант, получше

<!DOCTYPE HTML>
<html lang="en"><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">


<meta charset="utf-8">
<title>Canvas Primer - Example: ImageData colour inversion filter</title>

</head><body>

<p><canvas id="myCanvas" width="350" height="350"></canvas></p>
<canvas id="test"></canvas>
<script type="text/javascript">

var test = document.getElementById('test');
testCtx = test.getContext('2d');
testCtx.fillStyle = 'red';
testCtx.fillRect(0, 0, 100, 100);
testCtx.fill();<!--
window.addEventListener('load', function () {

var elem = document.getElementById('myCanvas');
if (!elem || !elem.getContext) {
return;
}


var context = elem.getContext('2d');
if (!context || !context.getImageData || !context.putImageData || !context.drawImage) {
return;
}

var x = 0, y = 0;

var imgd = testCtx.getImageData(x, y, 300, 300);
context.putImageData(imgd, x, y);/**/
}, false);
</script>
</body></html>

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy